package com.tedu.cn;

import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

import java.util.List;

/**
 * 我的第一个爬虫项目，入门案例
 */
public class ReptileMain implements PageProcessor {
    //声明爬虫的site对象，设置参数，重试次数，爬取时间间隔
    private Site site = Site.me().setRetryTimes(2).setTimeOut(2000).setSleepTime(2000);
    //定义url正则表达式
    private String regex = "http://www.dangjian.com/[0-9a-z]+/[0-9a-zA-Z]+/[0-9a-zA-Z]+/[0-9A-Za-z_]+.shtml";

    /**
     * 爬虫爬取内容
     * @param page
     */
    public void process(Page page) {
        //输出页面的超链接  9分钟。。。。
//        System.out.println(page.getHtml());
        //获取超链接   使用正则表达式   解析出  符合条件的uml
        //对超链接做补全操作
        List<String> all = page.getHtml().links().all();
        System.out.println("url:"+all);
//       //把超链接放到爬虫的队列中，自动爬虫，把网址的数据全部爬取，结束，，不结束。。。
//        page.addTargetRequests(all);

        // 页面：  解析出url   http://dangjian.com/   不需要解析页面

        //需要解析url+页面
        Document document = page.getHtml().getDocument();
        //获取CurrChnlCls  值
        Elements select = document.select("#CurrChnlCls");
        System.out.println("1"+select);

        Elements currChnlCls = document.getElementsByClass("CurrChnlCls");
        System.out.println("11"+currChnlCls);
        //处理，不是全部信息都需要发送

        Element title_tex = document.getElementById("title_tex");
        System.out.println(title_tex.text());

        Element time_tex = document.getElementById("time_tex");
        System.out.println(time_tex);

        Element time_ly = document.getElementById("time_ly");
        System.out.println(time_ly);

        Elements trs_editor = document.getElementsByClass("TRS_Editor");
        System.out.println(trs_editor);

        Elements bj = document.getElementsByClass("bj");
        System.out.println(bj);
        //把信息发送到数据持久化组件  DataDao
        page.putField("currChnlCls",currChnlCls);
        page.putField("title_tex",title_tex.text());
        page.putField("time_tex",time_tex.text());
        page.putField("time_ly",time_ly);
        page.putField("trs_editor",trs_editor);
        page.putField("bj",bj.text());
        //不在   调用dao  保存数据   花时间？？？可控？？？？  近5年  个高校的  高考录取分数，规律，，低分  好大学
        //数据量  比较大；；；；





    }

    public Site getSite() {
        return site;
    }
    /**
     * 第一个爬虫的入口
     * @param args
     */
    public static void main(String[] args) {
        //声明一个爬虫的解析组件
        ReptileMain reptileMain = new ReptileMain();
        //声明一个爬虫的导演Spider
        Spider spider = Spider.create(reptileMain);
        //设置参数
        spider.addUrl("http://www.dangjian.com/djw2016sy/rsrm1/202006/t20200617_5676508.shtml");
        //设置线程
        spider.thread(5);
        //设置爬虫的数据持久化
        spider.addPipeline(new DataDao());
        spider.run();

    }
}
